Dll a string
Otázka od: EFG developer
29. 10. 2002 11:00
Zdravim,
vim, ze se to tu jiz nekolikrat probiralo ale presto:
jak udelat, aby mi funkce v Dll vratila string.
prosim o ukazku kodu v dll i ukazku kodu v aplikaci.
Dekuji Petr Sikola
Odpovedá: Jan Sebelík
29. 10. 2002 13:22
> Odesílatel: EFG developer <developer@efg.cz>
> vim, ze se to tu jiz nekolikrat probiralo ale presto:
> jak udelat, aby mi funkce v Dll vratila string.
Promin, ale taky tady mnohokrat bylo, ze parametry a Result funkci v DLL je
lepsi psat jako PChar.
Uz kvuli tomu, ze jednim z ucelu DLL je jejich nezavislost na vyvojove
platforme. Pascalovsky String z/do C ani z/do jineho prostredi stejne
nedostanes.
Jinak, abych preci jenom odpovedel:
z DLL je to stejne, jako, kdyz ji volas z unit.
Jenom musis napsat nejake to uses ShareMem (nebo co, presne nevim) - viz popis
pri File / New / DLL
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================
Odpovedá: Jan Sebelík
29. 10. 2002 12:47
> Odesílatel: EFG developer <developer@efg.cz>
> vim, ze se to tu jiz nekolikrat probiralo ale presto:
> jak udelat, aby mi funkce v Dll vratila string.
Promin, ale taky tady mnohokrat bylo, ze parametry a Result funkci v DLL je
lepsi psat jako PChar.
Uz kvuli tomu, ze jednim z ucelu DLL je jejich nezavislost na vyvojove
platforme. Pascalovsky String z/do C ani z/do jineho prostredi stejne (jen tak
lehce) nedostanes.
Jinak, abych preci jenom odpovedel:
z DLL je to stejne, jako, kdyz ji volas z unit.
Jenom musis napsat nejake to uses ShareMem (nebo co, presne nevim) - viz popis
pri File / New / DLL
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================
Odpovedá: EFG developer
29. 10. 2002 13:34
OK, je mi to jasne
tedy: potrebuju vracet string, ale staci mi to pres PChar - a k tomu
bych potreboval ten kousek kodu, protoze nevim jak to udelat.
Petr
> Promin, ale taky tady mnohokrat bylo, ze parametry a Result
> funkci v DLL je lepsi psat jako PChar.
> Uz kvuli tomu, ze jednim z ucelu DLL je jejich nezavislost na
> vyvojove platforme. Pascalovsky String z/do C ani z/do jineho
> prostredi stejne (jen tak lehce) nedostanes.
>
> Jinak, abych preci jenom odpovedel:
> z DLL je to stejne, jako, kdyz ji volas z unit.
> Jenom musis napsat nejake to uses ShareMem (nebo co, presne
> nevim) - viz popis pri File / New / DLL
>
> Honza
Odpovedá: Petr Fejfar
29. 10. 2002 13:35
From: "EFG developer" <developer@efg.cz>
> OK, je mi to jasne
> tedy: potrebuju vracet string, ale staci mi to pres
> PChar - a k tomu bych potreboval ten kousek kodu,
> protoze nevim jak to udelat.
Typicky se to dela takto:
function XYZ(ABuf:pChar; AMaxLen:integer): integer;
var
S: ANSIString;
begin
S := 'Tohle je text, ktery chci vratit';
strLCopy(ABuf,pChar(S),AMaxLen-1);
Result := strlen(ABuf);
end;
...
var
S: ANSIString;
MaxLen: integer;
ActLen: integer;
begin
...
MaxLen := 64;
SetLength(S,MaxLen);
ActLen := XYZ(pChar(S),MaxLen);
SetLength(S,ActLen);
...
end;
HTH, pf
Odpovedá: Petr Vones
29. 10. 2002 13:48
From: "EFG developer" <developer@efg.cz>
> vim, ze se to tu jiz nekolikrat probiralo ale presto:
> jak udelat, aby mi funkce v Dll vratila string.
>
> prosim o ukazku kodu v dll i ukazku kodu v aplikaci.
http://delphi.cz/soubor.asp?rok=2002&mesic=jan&den=04&soubor=dlfaaabx.htm
Petr Vones